﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using br.com.portocs.unidaacademico.dominio;

namespace br.com.portocs.unidaacademico.fabricas
{
    public class FabricaAluno
    {        
        public static Aluno cria(string nome, string cpf, string rg, string orgaoRG, string carteiraTrabalho,
            string numeroSerie, string tituloEleitor, string certificadoReservista, DateTime dataNascimento,
            string nacionalidade, string naturalidade, string sexo, string telefone, string celular, string observacoes,
            string senha, DateTime dataCadastro, string matricula)

        {
            //  Informações do Aluno
            return new Aluno
            {
                Id = -1,
                Nome = nome,
                CPF = cpf,
                RG = rg,
                OrgaoRG = orgaoRG,
                CarteiraTrabalho = carteiraTrabalho,
                NumeroSerie = numeroSerie,
                TituloEleitor = tituloEleitor,
                CertificadoReservista = certificadoReservista,
                DataNascimento = dataNascimento,
                Nacionalidade = nacionalidade,
                Naturalidade = naturalidade,
                Sexo = sexo,
                Telefone = telefone,
                Celular = celular,
                Observacoes = observacoes,
                Senha = senha,
                Matricula = matricula,
                DataCadastro = dataCadastro
            };    
        }

        public static Aluno cria(string nome, string cpf, string rg, string orgaoRG, string carteiraTrabalho,
            string numeroSerie, string tituloEleitor, string certificadoReservista, DateTime dataNascimento,
            string nacionalidade, string naturalidade, string sexo, string telefone, string celular, string observacoes,
            string senha, DateTime dataCadastro, string matricula, string logradouro, string numero, string complemento,
            string bairro, string cidade, string uf, TipoEndereco tipoEndereco)
        {

            var novoAluno = cria(nome, cpf, rg, orgaoRG, carteiraTrabalho,
                                 numeroSerie, tituloEleitor, certificadoReservista, dataNascimento,
                                 nacionalidade, naturalidade, sexo, telefone, celular, observacoes,
                                 senha, dataCadastro, matricula);

            var enderecoUnico = new Endereco
            {
                Logradouro = logradouro,
                Numero = numero,
                Complemento = complemento,
                Bairro = bairro,
                Cidade = cidade,
                UF = uf,
                Tipo = tipoEndereco
            };

            novoAluno.AdicionaEndereco(enderecoUnico);
            return novoAluno;
        }


        public static Aluno cria(string nome, string cpf, string rg, string orgaoRG, string carteiraTrabalho,
            string numeroSerie, string tituloEleitor, string certificadoReservista, DateTime dataNascimento,
            string nacionalidade, string naturalidade, string sexo, string telefone, string celular, string observacoes,
            string senha, DateTime dataCadastro, string matricula, IList<Endereco> enderecos)
        {

            var novoAluno = cria(nome, cpf, rg, orgaoRG, carteiraTrabalho,
                                 numeroSerie, tituloEleitor, certificadoReservista, dataNascimento,
                                 nacionalidade, naturalidade, sexo, telefone, celular, observacoes,
                                 senha, dataCadastro, matricula);

            if (enderecos != null)
            {
                foreach (var endereco in enderecos)
                {
                    novoAluno.AdicionaEndereco(endereco);
                }
            }

            return novoAluno;
        }
        
    }
}
